/**
 * Half-Sync/Half-Async
 * 半同步半异步的IO设计模式
 * [动机]
 * 同步模式编程简单 但是IO的利用率低
 * 异步模式编程复杂 但是IO利用率高
 * 此模式综合了同步异步的优缺点 高层中使用同步IO模型,简化编程。低层使用异步IO模型 高效执行
 * [应用场景]
 * 1.系统必须响应和处理外部异步发生的事件
 * 2、一个或多个任务必须在单独的控制线程中执行 其他任务可以在多线程执行
 * 上层任务[数据库查询,文件传输]使用同步IO模式 简化编写并行程序的难度
 * 底层任务[网络控制器的中断处理]使用异步IO模型 提高了执行效率
 * [实现方案]
 * 1.同步任务层
 * 用户级的进程
 * 本层的任务完成上层的I/O操作，使用同步I/O模型，通过队列层的队列中传输数据。和异步层不同，同步层的任务使用活动对象执行，这些活动对象有自己运行栈和寄存器状态。当执行同步I/O的时候，他们会被阻塞/睡眠。
 * 2.队列层
 * 这个层在同步任务层和异步任务层之间，提供了同步控制和缓存的功能。异步任务的I/O 事件被缓存到消息队列中，同步任务层在队列中提取这些事件（相反方向亦然）
 * 3.异步任务层
 * 处理低层的事件，这些事件由多个外部的事件源产生（例如网卡，终端）。和异步任务不同，此层的实体是被动对象，没有自己的运行栈，要求不能被阻塞。
 * Created by heqianqian on 2017/8/9.
 */
package com.hqq.concurrency.half_syn_half_async;